/*
 * @Author: yuqy
 * @Date: 2023-04-10 17:30:15
 * @LastEditors: yuqy
 * @LastEditTime: 2023-10-13 15:14:03
 * @Descripttion: -
 */
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression'
import path from 'path';
const viteCompressionOption = {
  verbose: true,
  disable: false,
  deleteOriginFile: false, // 是否删除原文件
  threshold: 102400, // 0.1M  大小文件
  algorithm: 'gzip',
  ext: 'gz'
}
console.log(defineConfig)
// 路由的基础路径

// https://vitejs.dev/config/
export default defineConfig(
  ({ mode }) => {
    const env = loadEnv(mode, process.cwd());
    let VITE_APP_BASE_URL = env.VITE_APP_BASE_URL;
    return {
      plugins: [vue(), viteCompression(viteCompressionOption)],
      mode: 'development', // 模式
      base: '/' + VITE_APP_BASE_URL, // 静态资源路径
      publicDir: 'public',// 静态资源服务的文件夹
      build: {
        polyfillModulePreload: true, // 是否自动注入 module preload 的 polyfill
        outDir: 'dist', // 指定输出路径
        assetsDir: 'static', // 指定生成静态文件目录
        assetsInlineLimit: 4096, // 小于此阈值的导入或引用资源将内联为 base64 编码
        cssCodeSplit: true, // 启用 CSS 代码拆分
        cssTarget: '', // 允许用户为 CSS 的压缩设置一个不同的浏览器 target 与 build.target 一致
        sourcemap: false, // 构建后是否生成 source map 文件
        rollupOptions: {
          output: {
            chunkFileNames: 'static/js/[name]-[hash].js', // 引入文件名的名称
            entryFileNames: 'static/js/[name]-[hash].js', // 包的入口文件名称
            assetFileNames: 'static/[ext]/[name]-[hash].[ext]', // 资源文件像 字体，图片, css等
          }
        }, // 自定义底层的 Rollup 打包配置
        manifest: false, // 当设置为 true，构建后将会生成 manifest.json 文件
        ssrManifest: false, // 构建不生成 SSR 的 manifest 文件
        minify: 'esbuild', // 指定使用哪种混淆器
        terserOptions: {}, // 传递给 Terser 的更多 minify 选项
        write: true, // 启用将构建后的文件写入磁盘
        emptyOutDir: true, // 构建时清空该目录
        brotliSize: true, // 启用 brotli 压缩大小报告
        chunkSizeWarningLimit: 500, // chunk 大小警告的限制
        watch: null, // 设置为 {} 则会启用 rollup 的监听器
      },
      server: {
        host: '0.0.0.0',
        port: 8188,
        open: true, // open支持boolean/string类型，为true时打开默认浏览器，为string类型时，打开指定浏览器，具体查看官网即可
        proxy: { // 配置本地代理地址
          '/whiteboardclient': 'http://192.168.13.216',
          '/miniprogram': 'http://192.168.13.216',
          '/ws': 'ws://192.168.13.216'
        }
      },
      css: {
        preprocessorOptions: {
          less: {
            javascriptEnabled: true,
            additionalData: `@import "${path.resolve("src/assets/less/common.less")}";`,// 引入配置色
          }
        },
      },
      resolve: {
        alias: {
          "@": path.resolve('./src'),
          "@c": path.resolve('./src/components')
        }
      }
    }
  }
)
